/**
 * @/main.js
 * 创建 Vue 应用实例
 */

import { createApp } from "vue";
import "./style.css";
import App from "./App.vue";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
import { config } from "../config.js";
import axios from "axios";
import { createPinia } from "pinia";
import router from "@/router";
import * as ElementPlusIconsVue from "@element-plus/icons-vue";

/* 创建项目 Vue 应用 */
const app = createApp(App);

/* 配置项目 Vue 应用 */
// 配置 axios 全局对象
const axiosInstance = axios.create({
  baseURL: `http://${config.server_host}:${config.server_port}`, // 设置后端服务
  timeout: 10000, // 设置超时策略
  headers: { "Content-Type": "application/json" }, // 设置请求格式
  withCredentials: true, // 允许跨域发送和接收 Cookie(服务端和客户端必须同时设置)
});
app.provide("$axios", axiosInstance);
``;
// 配置 ElementPlus UI 图标
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component);
}

// 配置 ElementPlus UI 框架
app.use(ElementPlus); // 导入全部 ElementPlus UI 框架(方便)

// 配置 Pinia 状态
app.use(createPinia());

// 配置 Vue Router 页面路由
app.use(router);

/* 挂载项目 Vue 应用 */
app.mount("#app");
